#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "fdcan.h"
/************************************************

************************************************/

int main(void)
{
	u8 key;
	u8 t = 0;
	u8 canbuf[8] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
	u8 res;
	u8 mode = 1;
	Cache_Enable();												  // 打开L1-Cache
	HAL_Init();													  // 初始化HAL库
	Stm32_Clock_Init(160, 5, 2, 4);								  // 设置时钟,400Mhz
	delay_init(400);											  // 延时初始化
	uart_init(115200);											  // 串口初始化
	LED_Init();													  // 初始化LED
	KEY_Init();													  // 初始化按键
	FDCAN1_Mode_Init(10, 8, 31, 8, FDCAN_MODE_INTERNAL_LOOPBACK); // 回环测试
	printf("LoopBack Mode\r\n");
	while (1)
	{
		key = KEY_Scan();
		if (key == KEY1_PRES) // KEY1按下,发送一次数据
		{
			printf("发送数据：0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88 \r\n");
			res = FDCAN1_Send_Msg(canbuf, FDCAN_DLC_BYTES_8); // 发送8个字节
			if (res)
				printf("发送失败\r\n"); // 提示发送失败
			else
				printf("发送成功\r\n"); // 提示发送成功
		}
		else if (key == KEY2_PRES) // KEY2按下，改变CAN的工作模式
		{
			mode = !mode;
			if (mode == 0)
				FDCAN1_Mode_Init(10, 8, 31, 8, FDCAN_MODE_NORMAL); // 正常模式,波特率500Kbps
			else if (mode == 1)
				FDCAN1_Mode_Init(10, 8, 31, 8, FDCAN_MODE_INTERNAL_LOOPBACK); // 回环模式,波特率500Kbps

			if (mode == 0) // 普通模式，需要2个开发板
			{
				printf("Nnormal Mode\r\n");
			}
			else // 回环模式,一个开发板就可以测试了.
			{
				printf("LoopBack Mode\r\n");
			}
		}
		t++;
		delay_ms(10);
		if (t == 20)
		{
			LED1_Toggle; // 提示系统正在运行
			t = 0;
		}
	}
}
